package com.cuit.zuke.system.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cuit.zuke.system.dao.SysRoleMenuDao;
import com.cuit.zuke.system.entity.SysRoleMenuEntity;
import com.cuit.zuke.system.service.SysRoleMenuService;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @program: zuke
 * @description: 角色与菜单对应关系
 * @author: KamTang
 * @create: 2022-04-26 22:15
 **/
@Service
public class SysRoleMenuServiceImpl extends ServiceImpl<SysRoleMenuDao, SysRoleMenuEntity> implements SysRoleMenuService {
    /**
     * 添加or修改
     *
     * @param roleId     角色ID
     * @param menuIdList 菜单ID列表
     */
    @Override
    public void saveOrUpdate(Long roleId, List<Long> menuIdList) {
        // 先删除角色与菜单关系
        // 主要是修改时，需要删除原来的角色与菜单关系
        // 添加时，步骤一致
        deleteBatch(new Long[]{roleId});

        if(menuIdList.size() == 0){
            return ;
        }

        // 保存角色与菜单关系
        for(Long menuId : menuIdList){
            SysRoleMenuEntity sysRoleMenuEntity = new SysRoleMenuEntity();
            sysRoleMenuEntity.setMenuId(menuId);
            sysRoleMenuEntity.setRoleId(roleId);

            this.save(sysRoleMenuEntity);
        }
    }

    /**
     * 根据角色ID，获取菜单ID列表
     *
     * @param roleId 角色ID
     * @return 菜单ID列表
     */
    @Override
    public List<Long> queryMenuIdList(Long roleId) {
        return baseMapper.queryMenuIdList(roleId);
    }

    /**
     * 根据角色ID批量删除
     *
     * @param roleIds 角色ID列表
     */
    @Override
    public void deleteBatch(Long[] roleIds) {
        baseMapper.deleteBatch(roleIds);
    }
}
